package com.lau.dicttranslator.model;

import com.lau.dicttranslator.annotation.DictField;
import com.lau.dicttranslator.enums.DictType;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.lau.dicttranslator.serializer.DictFieldSerializer;
import lombok.Data;

/**
 * 缓存配置示例模型
 * 演示如何为不同字段设置不同的缓存策略
 */
@Data
public class CacheExampleModel {
    
    private Long id;
    private String name;
    
    /**
     * 高频访问字段：启用缓存，较长过期时间（2小时）
     */
    @DictField(
        dictType = DictType.DATABASE, 
        dictCode = "gender", 
        enableCache = true, 
        cacheExpire = 7200  // 2小时
    )
    @JsonSerialize(using = DictFieldSerializer.class)
    private String gender;
    
    /**
     * 中频访问字段：启用缓存，标准过期时间（1小时）
     */
    @DictField(
        dictType = DictType.DATABASE, 
        dictCode = "department", 
        enableCache = true, 
        cacheExpire = 3600  // 1小时
    )
    @JsonSerialize(using = DictFieldSerializer.class)
    private String deptId;
    
    /**
     * 低频访问字段：启用缓存，较短过期时间（30分钟）
     */
    @DictField(
        dictType = DictType.DATABASE, 
        dictCode = "education", 
        enableCache = true, 
        cacheExpire = 1800  // 30分钟
    )
    @JsonSerialize(using = DictFieldSerializer.class)
    private String education;
    
    /**
     * 实时性要求高的字段：禁用缓存
     */
    @DictField(
        dictType = DictType.DATABASE, 
        dictCode = "status", 
        enableCache = false  // 禁用缓存，每次都查询最新数据
    )
    @JsonSerialize(using = DictFieldSerializer.class)
    private String status;
    
    /**
     * 枚举字段：启用缓存，长期缓存（24小时）
     */
    @DictField(
        dictType = DictType.ENUM, 
        dictCode = "com.lau.dicttranslator.enums.StatusEnum", 
        enableCache = true, 
        cacheExpire = 86400  // 24小时
    )
    @JsonSerialize(using = DictFieldSerializer.class)
    private Integer priority;
} 